package cn.toutatis.basics

/**
 * 01-程序入口点
 * Kotlin 应用程序的入口点是 main 函数。
 *
 * kotlin与java有区别
 * kotlin有两种创建main入口函数的方法：
 * 一种是创建class块外面，另一种就是创建class里面（与JAVA方法一样）
 *
 * 为什么kotlin可以在class外部声明main函数？
 * 在Java中，这是不可能的，那不是面向对象语言正常工作的方式。
 * 考虑Java静态方法的性质。类应该是对象的蓝图，描述它们的行为和状态。但是您可以调用静态方法而无需创建任何实例。
 * 这如何适应面向对象的情况？静态方法如何“属于”其声明的类？
 * 实际上，静态方法是Java中的一种技巧，它们污染并滥用了类的OOP概念。但是这些年来，您已经习惯了它们，所以您不再有这种感觉了。
 * 从概念上讲，静态方法是顶级函数，Java使用其声明类的名称作为其命名空间。与此相反，Kotlin允许您声明顶级函数，而不会将类误用于命名空间。
 */

fun main(args:Array<String>){
    println("Hello world!")
}

class A01_ProgramEntryPoint {

    companion object{
        @JvmStatic
        fun main(args: Array<String>){
            System.err.println("Hello inner world!")
        }
    }

}